#ifndef _BIK_APP_H_
#define _BIK_APP_H_

#include "resource.h"
#include "admanager/admanager.h"
#include "application/game_application.h"
#include "build.h"

#ifdef _PLATFORM_WIN32
	#include "application/window_handler_win32.h"
#endif // _PLATFORM_WIN32

#ifdef _PLATFORM_SDL
	#include "application/window_handler_sdl.h"
#endif

class GENGameState;
class Font;

#ifdef _PLATFORM_WIN32

class	GENWin32Handler : public WindowHandlerWin32
{
public:
	GENWin32Handler(HINSTANCE	hInst) : WindowHandlerWin32(hInst) {};
    
	virtual HICON		GetApplicationIcon() const		
	{ 
		return ::LoadIcon ( m_Instance, MAKEINTRESOURCE(IDI_ICON1) ); 
	};

	virtual HICON		GetApplicationIconSm() const	
	{ 
		return ::LoadIcon ( m_Instance, MAKEINTRESOURCE(IDI_ICON1) ); 
	};

	virtual	bool		OnFileDrag(const std::string& File) 
	{ 
		return true; 
	};
    
};
#endif

#ifdef _PLATFORM_SDL
class	GENWin32Handler : public WindowHandlerSDL
{
public:
	GENWin32Handler() :
    WindowHandlerSDL()
    {
    }		
};
#endif

class BIKApp : public GameApp  , AdHandler  
{
public:

	BIKApp (	WindowHandler*		pHandler,
				const std::string&	Config, 
				const std::string&	Log);

	~BIKApp();
	
	virtual std::string			GetSaveFile() 
	{ 
#ifndef PRO_VERSION
		return "mt5.rms"; 
#else
		return "mt5_pro.rms"; 
#endif

	};
	
	virtual void				LoadArchives();    
	virtual void				OnCreateSplash();
	virtual void				OnBindKeys();    
	virtual void				OnCreateStates();
	virtual void				OnInitFonts();   
    virtual bool                Shutdown();

	// ad manager handler
    virtual void                OnAdFullScreenShow();
    virtual void                OnAdFullScreenDismissed();
	

	int							m_DebugLoadingCount;
	


protected:
	//virtual GameRMS*				CreateRMS();  
	virtual void					SetupUI();
	


    
private:	


};


#endif


